package com.atguigu.tingshu.order.interceptor.impl;

import com.atguigu.tingshu.common.constant.SystemConstant;
import com.atguigu.tingshu.order.context.SaveOrderStrategyContext;
import com.atguigu.tingshu.order.interceptor.OrderHandlerInterceptor;
import com.atguigu.tingshu.order.strategy.SaveOrderStrategy;
import com.atguigu.tingshu.vo.order.OrderInfoVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

@Service
@Slf4j
public class SavaOrderOrderHandlerInterceptor implements OrderHandlerInterceptor {

    @Override
    public OrderInfoVo sbumitOrderRequestProcess(OrderInfoVo orderInfoVo) {

        // 获取用户所选择的支付类型
        String payWay = orderInfoVo.getPayWay();

        // 需要根据不同的支付方式执行不同的生成订单的逻辑代码，为了提高这段代码的可扩展性，后期维护性，可读性这里我们使用策略模式来完成
        SaveOrderStrategy saveOrderStrategy = SaveOrderStrategyContext.getSaveOrderStrategy(payWay);

        // 执行保存订单的策略
        return saveOrderStrategy.saveOrder(orderInfoVo);
    }

    @Override
    public int sort() {
        return 3;
    }

}
